تسلط بر پیش پردازش داده ها در R با استفاده از بسته `recipes`

پیش پردازش داده ها یک گام حیاتی در هر گردش کار یادگیری ماشین است. این اطمینان را می دهد که داده های شما تمیز، سازگار و آماده برای مدل سازی هستند. در R، بسته recipes یک چارچوب قدرتمند و انعطاف پذیر برای تعریف و اعمال مراحل پیش پردازش فراهم می کند. در این پست وبلاگ، ما به بررسی نحوه استفاده از recipes برای پیش پردازش داده ها برای یادگیری ماشین، گام به گام، خواهیم پرداخت.

                    آنچه در این وبلاگ پوشش خواهیم داد:

                    ۱. معرفی بسته `recipes`
                       - بسته `recipes` چیست و چرا مفید است؟

                    ۲. چرا پیش پردازش داده ها؟
                       - اهمیت مرکز کردن، مقیاس بندی و رمزگذاری در یادگیری ماشین.

                    ۳. پیش پردازش گام به گام با `recipes`
                       - نحوه ایجاد یک دستورالعمل پیش پردازش.
                       - مرکز کردن و مقیاس بندی متغیرهای عددی.
                       - رمزگذاری یک مرحله ای متغیرهای دسته بندی.

                    ۴. اعمال دستورالعمل
                       - نحوه آماده سازی و اعمال دستورالعمل به مجموعه داده های آموزش و آزمایش.

                    ۵. مثال: پیش پردازش در عمل
                       - یک مثال عملی از پیش پردازش یک مجموعه داده.

                    ۶. چرا از `recipes` استفاده کنیم؟
                       - مزایای استفاده از بسته `recipes` برای پیش پردازش.

                    ۷. نتیجه گیری
                       - خلاصه ای از نکات کلیدی و مراحل بعدی.
                

بسته recipes چیست؟

بسته recipes بخشی از اکوسیستم tidymodels در R است. این بسته به شما امکان می دهد مجموعه ای از مراحل پیش پردازش (مانند مرکز کردن، مقیاس بندی و رمزگذاری) را به روشی تمیز و قابل تکرار تعریف کنید. این مراحل در یک "دستورالعمل" کپسوله می شوند، که سپس می تواند بر روی مجموعه داده های آموزش و آزمایش شما اعمال شود.


چرا پیش پردازش داده ها؟

قبل از پرداختن به کد، بیایید به طور خلاصه در مورد اهمیت پیش پردازش بحث کنیم:

  1. مرکز کردن و مقیاس بندی:

    • بسیاری از الگوریتم های یادگیری ماشین (به عنوان مثال، SVM، KNN، شبکه های عصبی) به مقیاس ویژگی ها حساس هستند. اگر ویژگی ها مقیاس های بسیار متفاوتی داشته باشند، مدل ممکن است اهمیت نامناسبی به ویژگی های دارای مقادیر بزرگتر بدهد.

    • مرکز کردن و مقیاس بندی اطمینان می دهد که همه ویژگی ها در یک مقیاس قابل مقایسه قرار دارند و عملکرد و همگرایی مدل را بهبود می بخشد.

  2. رمزگذاری یک مرحله ای:

    • الگوریتم های یادگیری ماشین معمولاً به ورودی عددی نیاز دارند. متغیرهای دسته بندی باید به شکل عددی تبدیل شوند.

    • رمزگذاری یک مرحله ای هر دسته را به یک بردار باینری تبدیل می کند و از این رو مدل از فرض رابطه ترتیبی بین دسته ها جلوگیری می کند.


پیش پردازش گام به گام با recipes

بیایید کد زیر را تجزیه کنیم تا بفهمیم چگونه داده ها را با استفاده از بسته recipes پیش پردازش کنیم:

preprocess_recipe <- recipe(target_variable ~ ., data = training_data) %>%
  step_center(all_numeric(), -all_outcomes()) %>%
  step_scale(all_numeric(), -all_outcomes()) %>%
  step_dummy(all_nominal(), -all_outcomes(), one_hot = TRUE)

۱. ایجاد شیء دستورالعمل

preprocess_recipe <- recipe(target_variable ~ ., data = training_data)
  • هدف: یک شیء recipe برای تعریف مراحل پیش پردازش ایجاد می کند.

  • target_variable ~ .: مشخص می کند که target_variable متغیر هدف (وابسته) است و همه متغیرهای دیگر در training_data ویژگی ها (متغیرهای مستقل) هستند.

  • data = training_data: مجموعه داده آموزشی مورد استفاده را مشخص می کند.


۲. مرکز کردن متغیرهای عددی

step_center(all_numeric(), -all_outcomes())
  • هدف: متغیرهای عددی را با کم کردن میانگین آنها مرکز می کند، به طوری که میانگین هر متغیر 0 می شود.

  • all_numeric(): همه متغیرهای عددی را انتخاب می کند.

  • -all_outcomes(): متغیر هدف (target_variable) را حذف می کند، زیرا نیازی به مرکز کردن ندارد.


۳. مقیاس بندی متغیرهای عددی

step_scale(all_numeric(), -all_outcomes())
  • هدف: متغیرهای عددی را با تقسیم آنها بر انحراف معیارشان مقیاس می کند، به طوری که انحراف معیار هر متغیر 1 می شود.

  • all_numeric(): همه متغیرهای عددی را انتخاب می کند.

  • -all_outcomes(): متغیر هدف (target_variable) را حذف می کند، زیرا نیازی به مقیاس بندی ندارد.


۴. رمزگذاری یک مرحله ای برای متغیرهای دسته بندی

step_dummy(all_nominal(), -all_outcomes(), one_hot = TRUE)
  • هدف: متغیرهای دسته بندی را با استفاده از رمزگذاری یک مرحله ای به متغیرهای باینری (0/1) تبدیل می کند.

  • all_nominal(): همه متغیرهای اسمی (دسته بندی) را انتخاب می کند.

  • -all_outcomes(): متغیر هدف (target_variable) را حذف می کند، زیرا نیازی به رمزگذاری ندارد.

  • one_hot = TRUE: مشخص می کند که باید از رمزگذاری یک مرحله ای استفاده شود.


اعمال دستورالعمل

پس از تعریف دستورالعمل، می توانید آن را روی داده های خود اعمال کنید:

# Prepare the recipe with the training data
prepared_recipe <- prep(preprocess_recipe, training = training_data, verbose = TRUE)

# Apply the recipe to the training data
train_data_preprocessed <- juice(prepared_recipe)

# Apply the recipe to the testing data
test_data_preprocessed <- bake(prepared_recipe, new_data = testing_data)
  • prep(): آمارهای لازم (به عنوان مثال، میانگین ها، انحراف معیارها) را از داده های آموزشی محاسبه می کند تا مراحل پیش پردازش را اعمال کند.

  • juice(): دستورالعمل را روی داده های آموزشی اعمال می کند.

  • bake(): دستورالعمل را روی داده های جدید (به عنوان مثال، مجموعه آزمایش) اعمال می کند.


مثال: پیش پردازش در عمل

فرض کنید مجموعه داده training_data به این شکل است:

target_variable feature_1 feature_2 category
۱۵۰ ۲۵ ۵۰۰۰۰ A
۱۶۰ ۳۰ ۶۰۰۰۰ B
۱۴۰ ۲۲ ۴۵۰۰۰ B

داده های پیش پردازش شده

  1. مرکز کردن و مقیاس بندی:

    • feature_1 و feature_2 مرکز و مقیاس بندی شده اند.

  2. رمزگذاری یک مرحله ای:

    • category به متغیرهای باینری تبدیل می شود: category_A و category_B.

داده های پیش پردازش شده ممکن است به این شکل باشند:

target_variable feature_1_scaled feature_2_scaled category_A category_B
۱۵۰ -۰.۵ ۰.۲ ۱ ۰
۱۶۰ ۰.۵ ۰.۸ ۰ ۱
۱۴۰ -۱.۰ -۰.۵ ۰ ۱

چرا از recipes استفاده کنیم؟

بسته recipes چندین مزیت دارد:

  1. قابلیت تکرار: مراحل پیش پردازش به وضوح تعریف شده اند و می توانند مجدداً استفاده شوند.

  2. سازگاری: مراحل پیش پردازش یکسان بر روی مجموعه داده های آموزش و آزمایش اعمال می شوند.

  3. انعطاف پذیری: می توانید به راحتی مراحل را در خط لوله پیش پردازش اضافه یا اصلاح کنید.


نتیجه گیری

پیش پردازش داده ها یک گام مهم در آماده سازی داده های شما برای یادگیری ماشین است. با استفاده از بسته recipes در R، می توانید مراحل پیش پردازش را به روشی تمیز، قابل تکرار و کارآمد تعریف و اعمال کنید. با مرکز کردن، مقیاس بندی و رمزگذاری داده های خود، اطمینان حاصل می کنید که مدل های یادگیری ماشین شما در بهترین حالت خود عمل می کنند.

آماده امتحان کردن آن هستید؟ بسته recipes را نصب کنید و از امروز پیش پردازش داده های خود را شروع کنید!

install.packages("recipes")
library(recipes)

کدنویسی مبارک!